package com.jt.demos;

import redis.clients.jedis.Jedis;

import java.util.Set;

/**
 * 投票系统演示: 模拟某个活动的投票程序
 * 业务说明: 每个用户只能投票一次(不允许重复)
 * 数据结构设计: 基于redis的set类型进行数据存储
 */
public class VoteDemo01 {
    private static Jedis jedis = new Jedis("192.168.126.129",6379);
    //1. 模拟投票(key为活动id,value为用户id)
    static void vote(String activityId,String userId){
        jedis.sadd(activityId,userId);
    }
    //2. 查看活动投票次数
    static Long getVoteCount(String activityId){
        Long count = jedis.scard(activityId);
        return count;
    }
    //3. 查看哪些用户投过票
    static Set<String> getVoteUsers(String activityId){
        Set<String> smembers = jedis.smembers(activityId);
        return smembers;
    }
    //4. 检查用户是否投过票
    static Boolean checkVote(String activityId, String userId){
        Boolean flag = jedis.sismember(activityId, userId);
        return flag;
    }
    public static void main(String[] args) {
        //1. 初始化
        String activityId = "10001";
        String user1 = "1";
        String user2 = "2";
        String user3 = "3";
        //2. 投票
        vote(activityId,user1);
        vote(activityId, user2);
        vote(activityId, user3);
        //3. 获取投票次数
        Long voteCount = getVoteCount(activityId);
        System.out.println("投票次数:"+voteCount);
        //4. 检查是否投过票
        Set<String> voteUsers = getVoteUsers(activityId);
        System.out.println(voteUsers);
        //5. 检查用户是否投过票
        Boolean flag = checkVote(activityId, user1);
        System.out.println(flag?"已投过票":"未投票");
    }
}
